// 暴力解法
int removeElement(int* nums, int numsSize, int val) {
    int count = 0;
    // 遍历数组中的每个元素, i++是在特定条件才执行：当前元素不需被删除时
    for (int i = 0; i < numsSize; ) {
        // 如果当前元素等于要删除的元素，则把后续所有元素往前移动
        if (nums[i] == val) {
            for (int j = i; j < numsSize-1; j++) {
                nums[j] = nums[j+1];
            
            }
            numsSize--; // 记录当前数组长度
            continue; // 如果当前元素被删除，指针i不移动
        }
        i++;
    } 
    return numsSize;
}

// 双指针
int removeElement(int* nums, int numsSize, int val) {
    int slow = 0; // 慢指针负责保存新数组
    for (int fast = 0; fast < numsSize; fast++) {
        // 快指针元素不等于要删除元素时，赋值给慢指针
        if (nums[fast] != val) {
            nums[slow++] = nums[fast];
        }
    }
    return slow;
}
